#ifndef ENEMY_H
#define ENEMY_H
#include <queue>
#include <QObject>
#include <QPoint>
#include <QPixmap>
#include <set>
//#include <bits/stdc++.h>
#include "game.h"
#include "scene.h"
class Turret;
class Game;
class QColor;
class QMovie;
const int health_bar_width=50;
class Enemy
{
public:
    Enemy();
    Enemy(QPoint pos,int type,Game *game);   //pos敌人初始位置，type敌人类型
    ~Enemy();
    void setHp(int hurt);  //扣除hurt的血量
    void move();
    bool check_turret(Game *game);
    void chose_turret();
    void attack();         //发出一颗子弹
    QPoint getPos();
    void UpdateMap();

    void draw(QPainter *painter) const;
    QColor getColor() const;
private:

    bool operator < (const Enemy &rhs) const
    {
        int final_x=1048;//unfinished
        int final_y=620;//unfinished
        int nx=pos.x(),ny=pos.y();
        int Rx=rhs.pos.x();
        int Ry=rhs.pos.y();
        int ndis=abs(nx-final_x)+abs(ny-final_y);
        int rdis=abs(Rx-final_x)+abs(Ry-final_y);
        if(ndis>rdis) return true;
        return false;
    }
public:

    int maxHp;              //最大血量
    int currentHp;          //当前血量
    int movespeed;          //移动速度，每帧移动距离
    int type;               //敌人类型
    int range;              //敌人攻击范围
    int firerate;           //敌人攻击频率
    int direction;           //敌人的方向
    int power;
    /*
     * direction=1时 表示向右走
     * direction=2时 表示向左走
     * direction=3时 表示向上走
     * direction=4时 表示向下走
    */
    int target_point;      //当前的目标航电
    QPoint pos;             //敌人位置
    Turret *current_turret; //当前攻击炮塔
    std::set<Turret*> turret_set;    //攻击范围内炮塔列表
    Game *game;
    QPixmap sprite;     //图片文件
    QTimer *timer; //发射子弹记时用的
    int atktime=0;
    QMovie *gif;
private slots:

protected:
};

#endif // ENEMY_H
